OpenStack Mitaka : Configure Swift#3 (Storage Node)
2016/06/08 |
Configure OpenStack Object Storage (Swift).
This example shows to configure like the environment below.
| +------------------+ | +-----------------+ | [ Control Node ] |10.0.0.30 | 10.0.0.50| [ Proxy Node ] | | Keystone |-----------+-----------| | +------------------+ | +-----------------+ | +---------------------------+--------------------------+ | | | |10.0.0.71 |10.0.0.72 |10.0.0.73 +-------+----------+ +--------+---------+ +--------+---------+ | [Storage Node#1] | | [Storage Node#2] | | [Storage Node#3] | | |-------| |-------| | +------------------+ +------------------+ +------------------+ |
Configure Storage Node on this section.
It's OK to set the same settings mostly on all Storage Nodes, but only IP address and Device number are different each other, though. Furthermore, add Hard drives on each Storage Nodes and create a partition "/dev/sdb1" for this settings. |
|
[1] | Install Swift-Account, Swift-Container, Swift-Object and others on all Storage Nodes like follows. |
root@snode01:~# apt-get -y install swift swift-account swift-container swift-object xfsprogs
|
[2] | Format free space of disk (/dev/sdb1 on this example) with XFS and mount on srv/node on allStorage Node like follows. (the number "device*" is different on each Storage Nodes) |
root@snode01:~# mkfs.xfs -i size=1024 -s size=4096 /dev/sdb1 meta-data=/dev/sdb1 isize=1024 agcount=4, agsize=1310656 blks = sectsz=4096 attr=2, projid32bit=0 data = bsize=4096 blocks=5242624, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0root@snode01:~# mkdir -p /srv/node/device0 root@snode01:~# mount -o noatime,nodiratime,nobarrier /dev/sdb1 /srv/node/device0 root@snode01:~# chown -R swift. /srv/node
root@snode01:~#
vi /etc/fstab # add to the end /dev/sdb1 /srv/node/device0 xfs noatime,nodiratime,nobarrier 0 0 |
[3] | Copy Swift Ring files from the Swift Proxy Node to all Storage Nodes. |
root@proxy:~# scp /etc/swift/*.gz 10.0.0.71:/etc/swift/ root@10.0.0.71's password: account.ring.gz 100% 3912 3.8KB/s 00:00 container.ring.gz 100% 3904 3.8KB/s 00:00 object.ring.gz 100% 3895 3.8KB/s 00:00 |
[4] | Configure Swift and Rsync on all Storage Nodes. |
root@snode01:~# chown swift. /etc/swift/*.gz
root@snode01:~#
vi /etc/swift/swift.conf # set the value which is set on Proxy Node [swift-hash] swift_hash_path_suffix = swift_shared_path swift_hash_path_prefix = swift_shared_path
root@snode01:~#
vi /etc/swift/account-server.conf # line 6: make sure the values are like follows bind_ip = 0.0.0.0 bind_port = 6002
root@snode01:~#
vi /etc/swift/container-server.conf # line 6: make sure the values are like follows bind_ip = 0.0.0.0 bind_port = 6001
root@snode01:~#
vi /etc/swift/object-server.conf # line 6: make sure the values are like follows bind_ip = 0.0.0.0 bind_port = 6000
root@snode01:~#
vi /etc/rsyncd.conf # create new pid file = /var/run/rsyncd.pid log file = /var/log/rsyncd.log uid = swift gid = swift address = 10.0.0.71 [account] path = /srv/node read only = false write only = no list = yes incoming chmod = 0644 outgoing chmod = 0644 max connections = 25 lock file = /var/lock/account.lock [container] path = /srv/node read only = false write only = no list = yes incoming chmod = 0644 outgoing chmod = 0644 max connections = 25 lock file = /var/lock/container.lock [object] path = /srv/node read only = false write only = no list = yes incoming chmod = 0644 outgoing chmod = 0644 max connections = 25 lock file = /var/lock/object.lock [swift_server] path = /etc/swift read only = true write only = no list = yes incoming chmod = 0644 outgoing chmod = 0644 max connections = 5 lock file = /var/lock/swift_server.lock
root@snode01:~#
vi /etc/default/rsync # line 8: change RSYNC_ENABLE= true
|
[5] | Start Swift services. |
root@snode01:~# systemctl start rsync root@snode01:~# systemctl enable rsync root@snode01:~# for ringtype in account container object; do
systemctl start swift-$ringtype systemctl enable swift-$ringtype for service in replicator updater auditor; do if [ $ringtype != 'account' ] || [ $service != 'updater' ]; then systemctl start swift-$ringtype-$service systemctl enable swift-$ringtype-$service fi done done swift-account start/running swift-account-replicator start/running swift-account-auditor start/running swift-container start/running swift-container-replicator start/running swift-container-updater start/running swift-container-auditor start/running swift-object start/running swift-object-replicator start/running swift-object-updater start/running swift-object-auditor start/running |